import { exec } from 'child_process';
import { promisify } from 'util';

// 将exec转换为返回Promise的函数，方便使用async/await
const execAsync = promisify(exec);

/**
 * 执行pnpm命令的函数
 * @param {string} command - 要执行的pnpm命令（如 'install', 'run dev' 等）
 * @param {string} [cwd] - 执行命令的工作目录，默认为当前目录
 * @returns {Promise<{stdout: string, stderr: string}>} 命令输出结果
 */
 async function runPnpmCommand(command, cwd = process.cwd()) {
  try {
    console.log(`正在执行: pnpm ${command}`);
    const { stdout, stderr } = await execAsync(`pnpm ${command}`, { cwd });

    // 输出命令执行结果
    if (stdout) console.log('输出:\n', stdout);
    if (stderr) console.log('错误信息:\n', stderr);

    return { stdout, stderr };
  } catch (error) {
    console.error('命令执行失败:', error.message);
    if (error.stdout) console.log('执行输出:', error.stdout);
    if (error.stderr) console.error('错误详情:', error.stderr);
    throw error; // 允许上层代码捕获错误
  }
}

export { runPnpmCommand };